const express = require('express');
const router = express.Router();
const { Course, Chapter, User } = require('../models');
const { failure, success } = require('../utils/responses');
const { NotFoundError } = require('../utils/errors');

router.get('/:id', async (req, res) => {
    try {
        const { id } = req.params;
        // const condition = {
        //     attributes: { exclude: ['CourseId'] },
        //     include: [
        //         {
        //             model: Course,
        //             as: 'course',
        //             attributes: ['id', 'name'],
        //             include: [
        //                 {
        //                     model: User,
        //                     as: 'user',
        //                     attributes: ['id', 'username', 'nickname', 'avatar', 'company']
        //                 }
        //             ]
        //         }
        //     ]
        // }

        //查询章节
        const chapter = await Chapter.findByPk(id, {
            attributes: { exclude: ['CourseId'] }
        });
        if (!chapter) {
            throw new NotFoundError(`ID为${id}的章节不存在`);
        }

        //通过章节查询关联课程
        const course = await chapter.getCourse({
            attributes: ['id', 'name', 'userId'],
        });

        //通过课程查询关联用户
        const user = await course.getUser({
            attributes: ['id', 'username', 'nickname', 'avatar', 'company']
        })

        //查询该课程所有章节
        const chapters = await Chapter.findAll({
            attributes: { exclude: ['CourseId', 'content'] },
            where: { courseId: chapter.courseId },
            order: [['rank', 'ASC'], ['id', 'DESC']]
        })
        success(res, '获取章节成功', { chapter, chapters, course, user })
    } catch (error) {
        failure(res, error);
    }
})

module.exports = router;